import store from '@/store/index';

// 定义权限标识验证规则
function verityAuth(list = []) {
  // 获取所有当前登录用户的所有分配权限
  const permissionSet = store?.getters['permission/permission'];
  // 根据传入的权限列表进行判断是否 存在
  if (list?.length > 0) {
    // 如果传入的权限值，有一个在 permissionSet 中，说明具有该权限
    const hasAuth = list.some((item) => {
      return permissionSet.has(item);
    });

    return hasAuth;
  }
}

// 定义权限指令
const AuthDirective = {
  //  被绑定元素插入父节点时调用
  inserted(el, binding, vnode) {
    const hasAuth = verityAuth(binding?.value);
    if (!hasAuth) {
      el?.parentNode?.removeChild(el);
    }
  }
};

export default AuthDirective;
